// pages/user-center/index.js
const app = getApp()

Page({
  data: {
    hasLogin: false,
    userInfo: {},
    loading: false,
    userStats: {} // 新增用户统计信息
  },

  onLoad() {
    this.checkLoginStatus();
    this.initCloudEnvironment();
  },

  // 初始化云环境
  initCloudEnvironment() {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
      return;
    }
    wx.cloud.init({
      env: 'cloud1-1gr78ytb75fcefdd', // 替换为你的云环境ID
      traceUser: true
    });
  },

  // 检查登录状态
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo');
    const openid = wx.getStorageSync('openid');
    
    if (userInfo && openid) {
      this.setData({ 
        hasLogin: true, 
        userInfo 
      });
      this.updateAppGlobalData(userInfo, openid);
    }
  },

  // 登录处理 - 修改后的版本
  handleLogin() {
    if (this.data.hasLogin || this.data.loading) return;
    
    this.setData({ loading: true });
    console.log('开始登录流程');

    // 第一步：直接获取用户信息（由用户点击触发）
    console.log('准备调用getUserProfile');
    wx.getUserProfile({
      desc: '用于完善会员资料和提供服务',
      lang: 'zh_CN',
      success: profileRes => {
        console.log('成功获取用户信息:', profileRes);
        
        // 第二步：获取code
        wx.login({
          success: loginRes => {
            console.log('获取到code:', loginRes.code);
            if (!loginRes.code) {
              this.loginFailHandler('获取code失败');
              return;
            }

            // 第三步：调用云函数处理登录
            wx.cloud.callFunction({
              name: 'userLogin',
              data: {
                code: loginRes.code,
                userInfo: profileRes.userInfo
              },
              success: cloudRes => {
                console.log('云函数返回:', cloudRes);
                const { openid, isNewUser } = cloudRes.result;
                
                // 存储用户信息
                wx.setStorageSync('userInfo', profileRes.userInfo);
                wx.setStorageSync('openid', openid);
                
                this.setData({
                  hasLogin: true,
                  userInfo: profileRes.userInfo,
                  loading: false
                });
                
                // 更新全局用户信息
                this.updateAppGlobalData(profileRes.userInfo, openid);
                

                wx.showToast({ 
                  title: isNewUser ? '欢迎新用户！' : '登录成功', 
                  icon: 'success',
                  duration: 1500
                });
              },
              fail: cloudErr => {
                console.error('云函数调用失败:', cloudErr);
                this.loginFailHandler('登录处理失败');
              }
            });
          },
          fail: loginErr => {
            console.error('wx.login失败:', loginErr);
            this.loginFailHandler('登录失败');
          }
        });
      },
      fail: profileErr => {
        console.error('获取用户信息失败:', profileErr);
        this.setData({ loading: false });
        if (profileErr.errMsg.includes('deny')) {
          wx.showModal({
            title: '提示',
            content: '需要授权才能使用完整功能',
            showCancel: false
          });
        } else {
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
        }
      }
    });
  },

  // 登录成功处理
  loginSuccessHandler(result, userInfo) {
    wx.setStorageSync('userInfo', userInfo);
    wx.setStorageSync('openid', result.openid);
    
    this.setData({
      hasLogin: true,
      userInfo: userInfo,
      loading: false
    });
    
    this.updateAppGlobalData(userInfo, result.openid);
    this.fetchUserStats();
    
    wx.showToast({
      title: result.isNewUser ? '欢迎新用户!' : '登录成功',
      icon: 'success'
    });
  },

  // 登录失败处理
  loginFailHandler(message) {
    console.error('登录失败:', message);
    this.setData({ loading: false });
    wx.showToast({
      title: message || '登录失败',
      icon: 'none'
    });
  },

  // 更新App全局数据
  updateAppGlobalData(userInfo, openid) {
    const app = getApp();
    app.globalData.userInfo = userInfo;
    app.globalData.openid = openid;
    console.log('全局用户数据已更新', app.globalData);
  },

  // 处理退出登录
  handleLogout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          wx.removeStorageSync('userInfo');
          wx.removeStorageSync('openid');
          
          this.setData({
            hasLogin: false,
            userInfo: {},
            userStats: {},
            loading: false
          });
          
          this.updateAppGlobalData(null, null);
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success'
          });
        }
      }
    });
  },

  // 跳转到关于页面
  navigateToAbout() {
    wx.navigateTo({
      url: '/pages/web-view/index?url=https://www.gzasc.edu.cn',
    });
  },

  // 跳转到我的预约
  navigateToMyAppointments() {
    if (!this.data.hasLogin) {
      this.handleLogin();
      return;
    }
    wx.navigateTo({ 
      url: '/pages/user-subscribe/index',
      success: () => {
        console.log('跳转到我的预约');
      }
    });
  },

  // 跳转到我的收藏
  navigateToMyFavorites() {
    if (!this.data.hasLogin) {
      this.handleLogin();
      return;
    }
    wx.navigateTo({ 
      url: '/pages/MyFavorites/MyFavorites',
      success: () => {
        console.log('跳转到我的收藏');
      }
    });
  },

  // 跳转到设置
  navigateToSettings() {
    if (!this.data.hasLogin) {
      this.handleLogin();
      return;
    }
    wx.navigateTo({ 
      url: '/pages/setting/index',
      success: () => {
        console.log('跳转到设置');
      }
    });
  }
});